{
  "copyright" : [
    "Copyright (c) 2014-2016 The Khronos Group Inc.",
    "",
    "Permission is hereby granted, free of charge, to any person obtaining a copy",
    "of this software and/or associated documentation files (the \"Materials\"),",
    "to deal in the Materials without restriction, including without limitation",
    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
    "and/or sell copies of the Materials, and to permit persons to whom the",
    "Materials are furnished to do so, subject to the following conditions:",
    "",
    "The above copyright notice and this permission notice shall be included in",
    "all copies or substantial portions of the Materials.",
    "",
    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
    "",
    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
    "IN THE MATERIALS."
  ],
  "version" : 100,
  "revision" : 2,
  "instructions" : [
    {
      "opname" : "Round",
      "opcode" : 1,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "RoundEven",
      "opcode" : 2,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Trunc",
      "opcode" : 3,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "FAbs",
      "opcode" : 4,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "SAbs",
      "opcode" : 5,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "FSign",
      "opcode" : 6,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "SSign",
      "opcode" : 7,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Floor",
      "opcode" : 8,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Ceil",
      "opcode" : 9,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Fract",
      "opcode" : 10,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Radians",
      "opcode" : 11,
      "operands" : [
        { "kind" : "IdRef", "name" : "'degrees'" }
      ]
    },
    {
      "opname" : "Degrees",
      "opcode" : 12,
      "operands" : [
        { "kind" : "IdRef", "name" : "'radians'" }
      ]
    },
    {
      "opname" : "Sin",
      "opcode" : 13,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Cos",
      "opcode" : 14,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Tan",
      "opcode" : 15,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Asin",
      "opcode" : 16,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Acos",
      "opcode" : 17,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Atan",
      "opcode" : 18,
      "operands" : [
        { "kind" : "IdRef", "name" : "'y_over_x'" }
      ]
    },
    {
      "opname" : "Sinh",
      "opcode" : 19,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Cosh",
      "opcode" : 20,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Tanh",
      "opcode" : 21,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Asinh",
      "opcode" : 22,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Acosh",
      "opcode" : 23,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Atanh",
      "opcode" : 24,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Atan2",
      "opcode" : 25,
      "operands" : [
        { "kind" : "IdRef", "name" : "'y'" },
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Pow",
      "opcode" : 26,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'y'" }
      ]
    },
    {
      "opname" : "Exp",
      "opcode" : 27,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Log",
      "opcode" : 28,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Exp2",
      "opcode" : 29,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Log2",
      "opcode" : 30,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Sqrt",
      "opcode" : 31,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "InverseSqrt",
      "opcode" : 32,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Determinant",
      "opcode" : 33,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "MatrixInverse",
      "opcode" : 34,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Modf",
      "opcode" : 35,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'i'" }
      ]
    },
    {
      "opname" : "ModfStruct",
      "opcode" : 36,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "FMin",
      "opcode" : 37,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'y'" }
      ]
    },
    {
      "opname" : "UMin",
      "opcode" : 38,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'y'" }
      ]
    },
    {
      "opname" : "SMin",
      "opcode" : 39,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'y'" }
      ]
    },
    {
      "opname" : "FMax",
      "opcode" : 40,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'y'" }
      ]
    },
    {
      "opname" : "UMax",
      "opcode" : 41,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'y'" }
      ]
    },
    {
      "opname" : "SMax",
      "opcode" : 42,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'y'" }
      ]
    },
    {
      "opname" : "FClamp",
      "opcode" : 43,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'minVal'" },
        { "kind" : "IdRef", "name" : "'maxVal'" }
      ]
    },
    {
      "opname" : "UClamp",
      "opcode" : 44,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'minVal'" },
        { "kind" : "IdRef", "name" : "'maxVal'" }
      ]
    },
    {
      "opname" : "SClamp",
      "opcode" : 45,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'minVal'" },
        { "kind" : "IdRef", "name" : "'maxVal'" }
      ]
    },
    {
      "opname" : "FMix",
      "opcode" : 46,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'y'" },
        { "kind" : "IdRef", "name" : "'a'" }
      ]
    },
    {
      "opname" : "IMix",
      "opcode" : 47,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'y'" },
        { "kind" : "IdRef", "name" : "'a'" }
      ]
    },
    {
      "opname" : "Step",
      "opcode" : 48,
      "operands" : [
        { "kind" : "IdRef", "name" : "'edge'" },
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "SmoothStep",
      "opcode" : 49,
      "operands" : [
        { "kind" : "IdRef", "name" : "'edge0'" },
        { "kind" : "IdRef", "name" : "'edge1'" },
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Fma",
      "opcode" : 50,
      "operands" : [
        { "kind" : "IdRef", "name" : "'a'" },
        { "kind" : "IdRef", "name" : "'b'" },
        { "kind" : "IdRef", "name" : "'c'" }
      ]
    },
    {
      "opname" : "Frexp",
      "opcode" : 51,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'exp'" }
      ]
    },
    {
      "opname" : "FrexpStruct",
      "opcode" : 52,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Ldexp",
      "opcode" : 53,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'exp'" }
      ]
    },
    {
      "opname" : "PackSnorm4x8",
      "opcode" : 54,
      "operands" : [
        { "kind" : "IdRef", "name" : "'v'" }
      ]
    },
    {
      "opname" : "PackUnorm4x8",
      "opcode" : 55,
      "operands" : [
        { "kind" : "IdRef", "name" : "'v'" }
      ]
    },
    {
      "opname" : "PackSnorm2x16",
      "opcode" : 56,
      "operands" : [
        { "kind" : "IdRef", "name" : "'v'" }
      ]
    },
    {
      "opname" : "PackUnorm2x16",
      "opcode" : 57,
      "operands" : [
        { "kind" : "IdRef", "name" : "'v'" }
      ]
    },
    {
      "opname" : "PackHalf2x16",
      "opcode" : 58,
      "operands" : [
        { "kind" : "IdRef", "name" : "'v'" }
      ]
    },
    {
      "opname" : "PackDouble2x32",
      "opcode" : 59,
      "operands" : [
        { "kind" : "IdRef", "name" : "'v'" }
      ],
      "capabilities" : [ "Float64" ]
    },
    {
      "opname" : "UnpackSnorm2x16",
      "opcode" : 60,
      "operands" : [
        { "kind" : "IdRef", "name" : "'p'" }
      ]
    },
    {
      "opname" : "UnpackUnorm2x16",
      "opcode" : 61,
      "operands" : [
        { "kind" : "IdRef", "name" : "'p'" }
      ]
    },
    {
      "opname" : "UnpackHalf2x16",
      "opcode" : 62,
      "operands" : [
        { "kind" : "IdRef", "name" : "'v'" }
      ]
    },
    {
      "opname" : "UnpackSnorm4x8",
      "opcode" : 63,
      "operands" : [
        { "kind" : "IdRef", "name" : "'p'" }
      ]
    },
    {
      "opname" : "UnpackUnorm4x8",
      "opcode" : 64,
      "operands" : [
        { "kind" : "IdRef", "name" : "'p'" }
      ]
    },
    {
      "opname" : "UnpackDouble2x32",
      "opcode" : 65,
      "operands" : [
        { "kind" : "IdRef", "name" : "'v'" }
      ],
      "capabilities" : [ "Float64" ]
    },
    {
      "opname" : "Length",
      "opcode" : 66,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "Distance",
      "opcode" : 67,
      "operands" : [
        { "kind" : "IdRef", "name" : "'p0'" },
        { "kind" : "IdRef", "name" : "'p1'" }
      ]
    },
    {
      "opname" : "Cross",
      "opcode" : 68,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'y'" }
      ]
    },
    {
      "opname" : "Normalize",
      "opcode" : 69,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" }
      ]
    },
    {
      "opname" : "FaceForward",
      "opcode" : 70,
      "operands" : [
        { "kind" : "IdRef", "name" : "'N'" },
        { "kind" : "IdRef", "name" : "'I'" },
        { "kind" : "IdRef", "name" : "'Nref'" }
      ]
    },
    {
      "opname" : "Reflect",
      "opcode" : 71,
      "operands" : [
        { "kind" : "IdRef", "name" : "'I'" },
        { "kind" : "IdRef", "name" : "'N'" }
      ]
    },
    {
      "opname" : "Refract",
      "opcode" : 72,
      "operands" : [
        { "kind" : "IdRef", "name" : "'I'" },
        { "kind" : "IdRef", "name" : "'N'" },
        { "kind" : "IdRef", "name" : "'eta'" }
      ]
    },
    {
      "opname" : "FindILsb",
      "opcode" : 73,
      "operands" : [
        { "kind" : "IdRef", "name" : "'Value'" }
      ]
    },
    {
      "opname" : "FindSMsb",
      "opcode" : 74,
      "operands" : [
        { "kind" : "IdRef", "name" : "'Value'" }
      ]
    },
    {
      "opname" : "FindUMsb",
      "opcode" : 75,
      "operands" : [
        { "kind" : "IdRef", "name" : "'Value'" }
      ]
    },
    {
      "opname" : "InterpolateAtCentroid",
      "opcode" : 76,
      "operands" : [
        { "kind" : "IdRef", "name" : "'interpolant'" }
      ],
      "capabilities" : [ "InterpolationFunction" ]
    },
    {
      "opname" : "InterpolateAtSample",
      "opcode" : 77,
      "operands" : [
        { "kind" : "IdRef", "name" : "'interpolant'" },
        { "kind" : "IdRef", "name" : "'sample'" }
      ],
      "capabilities" : [ "InterpolationFunction" ]
    },
    {
      "opname" : "InterpolateAtOffset",
      "opcode" : 78,
      "operands" : [
        { "kind" : "IdRef", "name" : "'interpolant'" },
        { "kind" : "IdRef", "name" : "'offset'" }
      ],
      "capabilities" : [ "InterpolationFunction" ]
    },
    {
      "opname" : "NMin",
      "opcode" : 79,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'y'" }
      ]
    },
    {
      "opname" : "NMax",
      "opcode" : 80,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'y'" }
      ]
    },
    {
      "opname" : "NClamp",
      "opcode" : 81,
      "operands" : [
        { "kind" : "IdRef", "name" : "'x'" },
        { "kind" : "IdRef", "name" : "'minVal'" },
        { "kind" : "IdRef", "name" : "'maxVal'" }
      ]
    }
  ]
}
